package Day010_排序算法_异常.demo04_异常的产生和处理;

/*
    throw关键字: 用来抛出一个指定的异常对象。
                1. 创建一个异常对象。封装一些提示信息(信息可以自己编写)。
                2. 需要将这个异常对象告知给调用者。通过关键字throw就可以完成。throw 异常对象。
    注意:
            throw用在方法内，用来抛出一个异常对象，将这个异常对象传递到调用者处，并结束当前方法的执行。

    使用格式：
            throw new 异常类名(参数);
            例如:
                throw new NullPointerException("要访问的arr数组不存在");
                throw new ArrayIndexOutOfBoundsException("该索引在数组中不存在，已超出范围");
 */

public class demo1_throw关键字 {
    public static void main(String[] args) {

        int[] arr={10,20,30};
        getElement2(arr,3);
        System.out.println("不会执行,结束");
        /*
        Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
        创建数组索引异常对象,new ArrayIndexOutOfBoundsException(""+index);
        抛出这个异常对象给调用者 throw new ArrayIndexOutOfBoundsException(""+index) ----> main()
        main()方法处理不了,交给JVM显示信息,终止程序
        */

    }

   /* public static void getElement(int[] arr,int index){
        System.out.println(arr[index]);
    }
*/
    public static void getElement2(int[] arr,int index){
        if (index < 0 || index > arr.length-1){
            //产生异常-->创建异常对象-->抛出异常-->传给调用者getElement2,main()方法处理不了,结束方法执行
            throw new ArrayIndexOutOfBoundsException("该索引在数组中不存在，已超出范围");
        } else{
            System.out.println(arr[index]);
        }
    }
}
